1use core::ffi::c_void;
2
3use crate::re::ActorPackage::ActorPackage;
4use crate::re::BGSEquipSlot::BGSEquipSlot;
5use crate::re::BGSPerkEntry::BGSPerkEntry;
6use crate::re::BSAnimationGraphManager::{BSAnimationGraphManager, BSAnimationGraphVariableCache};
7use crate::re::BSAtomic::BSSpinLock;
8use crate::re::BSPointerHandle::{ActorHandle, ObjectRefHandle};
9use crate::re::BSTArray::BSTArray;
10use crate::re::BSTEvent::BSTEventSource;
11use crate::re::BSTList::BSSimpleList;
12use crate::re::BSTSmartPointer::BSTSmartPointer;
13use crate::re::ExtraDataList::ExtraDataList;
14use crate::re::InventoryEntryData::InventoryEntryData;
15use crate::re::MagicItem::MagicItem;
16use crate::re::MagicSystem;
17use crate::re::NiAVObject::NiAVObject;
18use crate::re::NiPoint3::NiPoint3;
19use crate::re::NiSmartPointer::NiPointer;
20use crate::re::TESBoundObject::TESBoundObject;
21use crate::re::TESObjectREFR::TESObjectREFR;
22use crate::re::{
23 ActiveEffect, AnimResponse, BGSEntryPoint, BSCloneReserver, BSFaceGenAnimationData,
24 BSFaceGenNiNode, BSLightingShaderProperty, HitData, NiNode, QueuedFile, TESIdleForm,
25 bhkCharacterController, bhkRagdollPenetrationUtil,
26};
27
28#[commonlibsse_ng_derive_internal::to_bitflags]
29#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
30#[repr(u8)]
31pub enum RESET_3D_FLAGS {
32 None = 0,
33 Model = 1 << 0,
34 Skin = 1 << 1,
35 Head = 1 << 2,
36 Face = 1 << 3,
37 Scale = 1 << 4,
38 Skeleton = 1 << 5,
39 InitDefault = 1 << 6,
40 SkyCellSkin = 1 << 7,
41}
42
43#[repr(C)]
44#[derive(Debug)]
45pub struct CommandedActorData {
46 commandedActor: ActorHandle, pad04: u32, activeEffect: *mut ActiveEffect, }
50
51#[repr(C)]
52#[derive(Debug)]
53pub struct ObjectEquipParams {
54 extraDataList: *mut ExtraDataList, count: i32, pad0C: u32, equipSlot: *const BGSEquipSlot, unk18: *mut c_void, playEquipSounds: bool, forceEquip: bool, showMessage: bool, unk23: bool, unk24: bool, pad25: u8, pad26: u16, }
67
68#[repr(C)]
69#[derive(Debug)]
70pub struct QueuedItem {
71 next: *mut QueuedItem, object: *mut TESBoundObject, equipParams: ObjectEquipParams, queuedFiles: NiPointer<QueuedFile>, equip: bool, pad41: u8, pad42: u16, pad44: u32, }
80
81#[repr(C)]
82#[derive(Debug)]
83pub struct DeferredHideLimb {
84 dismemberTimer: f32, limbIndex: u32, dismemberedLimbRoot: NiPointer<NiNode>, replacementLimb: NiPointer<NiNode>, next: *mut DeferredHideLimb, explosion: bool, pad21: u8, pad22: u16, pad24: u32, }
94const _: () = assert!(core::mem::size_of::<DeferredHideLimb>() == 0x28);
95
96#[repr(C)]
97#[derive(Debug)]
98pub struct AIPerkData {
99 pub perkEntryArrays: [BSTArray<*mut BGSPerkEntry>; BGSEntryPoint::ENTRY_POINT_CEnum::count()],
100}
101const _: () = assert!(core::mem::size_of::<AIPerkData>() == 0x8A0);
102
103#[repr(C)]
104#[derive(Debug)]
105pub struct MiddleHighProcessData {
106 pub unk000: BSTEventSource<*mut c_void>, pub runOncePackage: ActorPackage, pub deadDetectList: BSTArray<ActorHandle>, pub refListChairBed: BSSimpleList<*mut TESObjectREFR>, pub rotation: NiPoint3, pub rotationSpeed: NiPoint3, pub actorMountPosition: NiPoint3, pub furniturePathPoint: NiPoint3, pub lastSeenPosition: NiPoint3, pub bleedoutAttacker: u32, pub wardState: MagicSystem::WardState, pub pad0F4: u32, pub animResponse: BSTSmartPointer<AnimResponse>, pub commandedActors: BSTArray<CommandedActorData>, pub damageRootNode: [*mut NiNode; 6], pub unk148: *mut NiAVObject, pub weaponBone: *mut NiNode, pub headNode: *mut NiAVObject, pub torsoNode: *mut NiAVObject, pub faceTargetSourceNode: *mut NiAVObject, pub faceNodeSkinned: *mut BSFaceGenNiNode, pub lightingProperty: NiPointer<BSLightingShaderProperty>, pub unk180: u64, pub itemstoEquipUnequip: *mut QueuedItem, pub lastHitData: *mut HitData, pub headDeferredHideLimb: *mut DeferredHideLimb, pub activeEffects: *mut BSSimpleList<*mut ActiveEffect>, pub animationGraphManager: BSTSmartPointer<BSAnimationGraphManager>, pub animationVariableCache: *mut BSAnimationGraphVariableCache, pub unk1B8: BSTArray<*mut c_void>, pub unk1D0: BSTArray<*mut c_void>, pub unk1E8: BSSpinLock, pub unk1F0: *mut c_void, pub unk1F8: u16, pub unk1FA: u16, pub unk1FC: u32, pub unk200: u32, pub headHeightOffset: f32, pub occupiedFurniture: ObjectRefHandle, pub unk20C: u32, pub unk210: *mut TESIdleForm, pub commandingActor: ActorHandle, pub pad21C: u32, pub leftHand: *mut InventoryEntryData, pub furnitureIdle: *mut TESIdleForm, pub unk230: *mut c_void, pub faceAnimationData: *mut BSFaceGenAnimationData, pub currentPackageSpell: *mut MagicItem, pub unk248: u64, pub charController: NiPointer<bhkCharacterController>, pub penetrationDetectUtil: BSTSmartPointer<bhkRagdollPenetrationUtil>, pub rightHand: *mut InventoryEntryData, pub bothHands: *mut InventoryEntryData, pub bodyPartPreload: NiPointer<QueuedFile>, pub unk278: NiPointer<BSCloneReserver>, pub lastIdlePlayed: *mut TESIdleForm, pub perkData: *mut AIPerkData, pub unk290: u32, pub currentFurnitureSubgraphID: u32, pub unk298: f32, pub unk29C: f32, pub unk2A0: f32, pub unk2A4: f32, pub currentMovementSpeed: f32, pub unk2AC: f32, pub unk2B0: f32, pub bleedoutRate: f32, pub unk2B8: f32, pub maximumWardPower: f32, pub unk2C0: f32, pub torchEvaluationTimer: f32, pub alphaMult: f32, pub scriptRefractPower: f32, pub unk2D0: f32, pub deferredKillTimer: f32, pub killMoveTimer: f32, pub unk2DC: f32, pub unk2E0: u32, pub unk2E4: u32, pub currentFurnitureMarkerID: u32, pub unk2EC: u32, pub unk2F0: u64, pub unk2F8: u32, pub unk2FC: u32, pub unk300: u32, pub unk304: u16, pub unk306: u16, pub unk308: u64, pub unk310: u8, pub update3DModel: RESET_3D_FLAGS, pub unk312: u16, pub unk314: u16, pub unk316: bool, pub unk317: bool, pub unk318: bool, pub unk319: bool, pub unk31A: bool, pub pickPocketed: bool, pub summonedCreature: bool, pub forceNextUpdate: bool, pub unk31E: bool, pub unk31F: bool, pub unk320: bool, pub unk321: bool, pub beenAttacked: bool, pub alwaysHit: bool, pub doNoDamage: bool, pub soulTrapped: bool, pub unk326: bool, pub unk327: bool, pub unk328: bool, pub preventCombat: bool, pub unk32A: bool, pub isFleeing: bool, pub unk32C: bool, pub hostileGuard: bool, pub unk32E: bool, pub unk32F: bool, pub unk330: bool, pub killQueued: bool, pub inDeferredKill: bool, pub pad333: bool, pub pad334: u32, }
230const _: () = assert!(core::mem::size_of::<MiddleHighProcessData>() == 0x338);